'use strict';

/* Controllers */

angular.module('app')
    .controller('AppCtrl', ['$rootScope', '$scope', '$translate', '$localStorage', '$window',
        function ($rootScope, $scope, $translate, $localStorage, $window, $log) {
            // add 'ie' classes to html
            var isIE = !!navigator.userAgent.match(/MSIE/i);
            isIE && angular.element($window.document.body).addClass('ie');
            isSmartDevice($window) && angular.element($window.document.body).addClass('smart');

            // config
            config();
            save2LocalStorage();
            initWatches();
            initLanguage();
            initLoginInterceptor();
            // initUser();
            function config() {
                $scope.app = {
                    title: '书籍管理平台',
                    name: '书籍管理平台',
                    version: '1.3.3',
                    // for chart colors
                    color: {
                        primary: '#7266ba',
                        info: '#23b7e5',
                        success: '#27c24c',
                        warning: '#fad733',
                        danger: '#f05050',
                        light: '#e8eff0',
                        dark: '#3a3f51',
                        black: '#1c2b36'
                    },
                    settings: {
                        themeID: 1,
                        navbarHeaderColor: 'bg-black',
                        navbarCollapseColor: 'bg-white-only',
                        asideColor: 'bg-black',
                        headerFixed: true,
                        asideFixed: false,
                        asideFolded: false,
                        asideDock: false,
                        container: false
                    }
                };
                $scope.addressData = null;
            }

            function save2LocalStorage() {
                // save settings to local storage
                if (angular.isDefined($localStorage.settings)) {
                    $scope.app.settings = $localStorage.settings;
                } else {
                    $localStorage.settings = $scope.app.settings;
                }
            }

            function initWatches() {
                $scope.$watch('app.settings', function () {
                    if ($scope.app.settings.asideDock && $scope.app.settings.asideFixed) {
                        // aside dock and fixed must set the header fixed.
                        $scope.app.settings.headerFixed = true;
                    }
                    // save to local storage
                    $localStorage.settings = $scope.app.settings;
                }, true);
            }

            function initLanguage() {
                // angular translate
                $scope.lang = {isopen: false};
                $scope.langs = {zh: 'Chinese'};
                // default chinese
                $scope.selectLang = $scope.langs[$translate.proposedLanguage()] || "Chinese";
                $translate.use($translate.preferredLanguage());

                $scope.setLang = function (langKey, $event) {
                    // set the current lang
                    $scope.selectLang = $scope.langs[langKey];
                    // You can change the language during runtime
                    $translate.use(langKey);
                    $scope.lang.isopen = !$scope.lang.isopen;
                };
            }

            function initLoginInterceptor() {
                // listen login intercept
                $rootScope.$on('loginIntercept', function (event) {
                    $scope.$state.go('access.login');
                });
            }

            function isSmartDevice($window) {
                // Adapted from http://www.detectmobilebrowsers.com
                var ua = $window['navigator']['userAgent'] || $window['navigator']['vendor'] || $window['opera'];
                // Checks for iOs, Android, Blackberry, Opera Mini, and Windows mobile devices
                return (/iPhone|iPod|iPad|Silk|Android|BlackBerry|Opera Mini|IEMobile/).test(ua);
            }

            function initUser() {
                $scope.user = {cellphone: '11111111111', password: 'admin'};
            }
        }]);